Many applications that run on client computing devices rely on rich functionality that these clients traditionally provide. For instance, current web applications run atop a large set of functionality provided by a browser, an operating system, and various libraries—each of which today's client computing devices store and make available to these applications. However, current computing trends suggest a future in which applications include all the code necessary to support their operation, and the client computing system provides only a minimal execution environment. By including all of the necessary code in this manner, these applications effectively place the entire task of ensuring the applications' efficacy on the applications' developer—a task that is currently divided between the developer's and the users of the applications.
While such an environment may be beneficial by pushing administration tasks to developers in this manner, this environment may render inoperable legacy applications (e.g., web applications) that rely on the rich functionality traditionally provided by client devices.